import { Injectable, LoggerService, Scope } from '@nestjs/common';
import { logger } from './logger.config';

/**
 * 自定义日志服务
 * 提供统一的日志记录接口
 */
@Injectable({ scope: Scope.TRANSIENT })
export class AppLoggerService implements LoggerService {
  private context?: string;

  /**
   * 设置日志上下文
   * @param context 上下文名称
   */
  setContext(context: string) {
    this.context = context;
    return this;
  }

  /**
   * 记录日志
   * @param message 日志消息
   * @param context 上下文
   */
  log(message: any, context?: string) {
    logger.log(message, { context: context || this.context });
  }

  /**
   * 记录错误日志
   * @param message 错误消息
   * @param trace 错误堆栈
   * @param context 上下文
   */
  error(message: any, trace?: string, context?: string) {
    logger.error(message, { trace, context: context || this.context });
  }

  /**
   * 记录警告日志
   * @param message 警告消息
   * @param context 上下文
   */
  warn(message: any, context?: string) {
    logger.warn(message, { context: context || this.context });
  }

  /**
   * 记录调试日志
   * @param message 调试消息
   * @param context 上下文
   */
  debug(message: any, context?: string) {
    logger?.debug?.(message, { context: context || this.context });
  }

  /**
   * 记录详细日志
   * @param message 详细消息
   * @param context 上下文
   */
  verbose(message: any, context?: string) {
    logger?.verbose?.(message, { context: context || this.context });
  }
}
